//-------------------------------------------------------------------
//	Copyright (c) 2012-2014 Zhirnov Andrey
//	This file is part of the "UXGEN-ES" project.
//	See copyright notice in "Engine.h".
//-------------------------------------------------------------------

#pragma once

#define UX_STL				Engine
#define UX_STL_CONFIG_PATH	<Base/Include/UXConfig.h>

#include "Shared/Base/Version.h"

#include <stl_core/ux_stl_core.h>

#include <stl_ext/Math/CoordTransform.h>
#include <stl_ext/Math/MathTypesExt.h>
#include <stl_ext/Math/TAABBox.h>
#include <stl_ext/Math/TCamera.h>
#include <stl_ext/Math/TFrustum.h>
#include <stl_ext/Math/TPlane.h>
#include <stl_ext/Math/TSphere.h>
#include <stl_ext/Math/TSpline.h>
#include <stl_ext/Math/ImageUtils.h>
#include <stl_ext/Math/TTransform.h>
#include <stl_ext/Types/TExtString.h>
#include <stl_ext/Types/TVariant.h>
#include <stl_ext/Types/TCrypt.h>


namespace Engine
{
	using namespace UXTypes;
	using namespace UXMath;
	using namespace UXMathExt;
	using namespace UXTypesExt;


	namespace Platforms
	{
		class IPlatform;
		class IFileSystem;
		class IApplication;
	}

	namespace Base
	{
		class IParallelThread;
		class ParallelThreadManager;

		class Resource;
		class ResourceManager;

		class Input;
		class EventSystem;
		
		typedef Platforms::IFileSystem	IFileSystem;
	}

	namespace Graphics
	{
		class BatchRender;
		class StateManager;
		class GraphicsEngine;
		class ShaderManager;
	}

	namespace Audio
	{
		class AudioEngine;
	}

	namespace UI
	{
		class UserInterface;
	}

	namespace Scene2D
	{
		class SceneManager;
	}

	namespace Scene3D
	{
		class SceneManager;
	}

	namespace Physics
	{
		class PhysicsEngine;
	}



	//
	// Global Constants
	//

	struct GlobalConst
	{
		enum
		{
		};
	};
	

	typedef uni_array< const uint8 >	uni_binbuffer_t;

	
	typedef UXTypes::CReferenced		Referenced;

	SHARED_POINTER( Referenced );


}	// Engine
